/*This file is part of WZLibCP.

 *  WZLibCP is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

 *  WZLibCP is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

 *  You should have received a copy of the GNU General Public License
    along with WZLibCP.  If not, see <http://www.gnu.org/licenses/>.
		
	Author: calc0000
*/
#ifndef __WZLIB_WZFILEHEADER_H
#define __WZLIB_WZFILEHEADER_H
#include "WZLibConfig.h"

#include <string>

#include "WZBinaryReader.h"

namespace WZLib{
	/**\brief Header of a WZ file.

	Contains the magic characters (_ident), size of the 
	file (_fileSize), the offset of the beginning of
	the file (_fileStart), the version of the file (_version),
	the copyright string (_copyright), and the hash of the
	file version (_versionHash).
	*/
	class WZFileHeader{
	protected:
		//!Magic characters of file
		std::string			_ident;
		//!Size of file
		unsigned long long	_fileSize;
		//!Start of file
		unsigned int		_fileStart;
		//!File version
		short				_version;
		//!Copyright string
		std::string			_copyright;
		//!Hash of _version
		unsigned int		_versionHash;
	public:
		//Constructor
		//!Constructor
		ctor				WZFileHeader();
		//Parser
		ErrorCode			parse		(WZBinaryReader* reader);
		//Getters/Setters
		std::string&		ident		();
		unsigned long long&	fileSize	();
		unsigned int&		fileStart	();
		short&				version		();
		std::string&		copyright	();
		unsigned int&		versionHash	();
	};
};

#endif